﻿//#define _CRT_SECURE_NO_WARNINGS
//#include<iostream>
//#include<string>
//#include<ctype.h>
//#include<stdio.h>
//#include<math.h>
//using namespace std;
////test 24 文字处理
//int main()
//{
//	int n, a=0, b=0;
//	string s, str;
//	cin >> n >> s;
//	while (n--)
//	{
//		int op;
//		cin >> op;
//		switch (op)
//		{
//		case 1:
//			cin >> str;
//			s += str;
//			cout << s << endl;
//			break;
//		case 2:
//			cin >> a >> b;
//			 s.substr(a, b);
//			cout << s << endl;
//			break;
//		case 3:
//			cin >> a >> str;
//			s.insert(a, str);
//			cout << s << endl;
//			break;
//		case 4:
//			cin >> str;
//			size_t ind = s.find(str);
//			if (ind != string::npos)
//			{
//				cout << ind << endl;
//
//			}
//			else
//			{
//				cout << "-1" << endl;
//			}
//
//			break;
//		}
//	}
//	return 0;
//}

//
//#include<iostream>
//#include<string>
//#include<ctype.h>
//#include<stdio.h>
//#include<math.h>
//using namespace std;
////test 25 高精度阶乘和
//void hp_multiply(string str, string s)
//{
//	int a1[3000] = { 0 };
//	int a2[3000] = { 0 };
//	int a3[6000] = { 0 };
//	int i = 0;
//	for (i = 0; i < str.size(); i++)
//	{
//		a1[str.size() - i - 1] = str[i] - '0';
//	}
//	for (i = 0; i < s.size(); i++)
//	{
//		a2[s.size() - i - 1] = s[i] - '0';
//	}
//	int tmp = 0;
//	int j = 0;
//	for (i = 0; i < s.size(); i++)
//	{
//		for (j = 0; j < str.size(); j++)
//		{
//			a3[j + i] = a3[j + i] + a1[j] * a2[i];
//			if (a3[j + i] >= 10)
//			{
//				a3[j + i + 1] += a3[j + i] / 10;
//				a3[j + i] %= 10;
//			}
//		}
//	}
//	int index = 0;
//	for (i = str.size() + s.size() - 1; i >= 0; i--)
//	{
//		if (a3[i] != 0)
//		{
//			index = i;
//			break;
//		}
//	}
//	string s2;
//	for (i = index, j = 0; i >= 0; i--, j++)
//	{
//		s2 += to_string(a3[i]);
//	}
//	str = s2;
//}
//int main()
//{
//	int i, n;
//	cin >> n;
//	string sum, str = "1";
//	for (int i = 1; i <= n; i++)
//	{
//		string s = to_string(i);
//		hp_multiply(str, s);
//		cout << str << endl;
//	}
//	return 0;
//}


#include<iostream>
#include<string>
using namespace std;


////test 1 d单词的长度 
//int main()
//{
//	string s;
//	cin >> s;
//	cout << s.size();
//	while (cin >> s)
//	{
//		cout << ",";
//		cout << s.size();
//	}
//
//	return 0;
//}


//#include <iostream>
//#include <string>
//#include <algorithm>
//using namespace std;
////test 9 计算阶乘之和
//int main()
//{
//	//高精度乘低精度
//	//高精度加法运算
//	string a;
//	int ans[100] = { 1 }, n, ans2[100] = { 0 };
//	int i = 0, j = 0;
//	cin >> n;
//	for (i = 1; i <= n; i++)
//	{
//		for (j = 0; j < 100; j++)
//		{
//			ans[j] *= i;
//		}
//		for (j = 0; j < 100; j++)
//		{
//			if (ans[j] >= 10)
//			{
//				ans[j + 1] += ans[j] / 10;
//				ans[j] %= 10;
//			}
//		}
//		for (j = 0; j < 100; j++)
//		{
//			ans2[j] += ans[j];
//			if (ans2[j] > 10)
//			{
//				ans2[j + 1] += ans2[j] / 10;
//				ans2[j] %= 10;
//			}
//		}
//	}
//	//寻找下b标
//	int index = 0;
//	for (index = 99; index >= 0; index--)
//	{
//		if (ans2[index] != 0)
//		{
//			break;
//		}
//	}
//	for (i = index; i >= 0; i--)
//	{
//		cout << to_string(ans2[i]);
//	}
//
//
//	return 0;
//}


//struct Stu
//{
//	char name[20];
//	int age;
//	char id[20];
//};//stu1;//创建的时候定义一个结构体变量
//
////struct Stu stu2 = { "zhangsan",20,"11111" };//定义一个全局变量
//struct Stu s2 = { s2.age = 18, s2.name = "lisi", .id = "20230818002" };
//int main()
//{
////	struct Stu stu3 = { "lisi",21,"22222" };//定义一个局部变量
//	struct Stu stu1 = { "zhanhsan",20,"11111" };//顺序初始化
//	
//	return 0;
//}

//struct S3
//{
//	double d;
//	char c;
//	int i;
//};
//struct S4
//{
//	char c1;
//	struct S3 s3;//16字节  //最大对齐数为8
//	double d;
//};
//#pragma pack(1)
//struct S1
//{
//	char c1;
//	int i;
//	char c2;
//};
//#pragma pack()
//struct S2
//{
//	char c1;
//	int i;
//	char c2;
//};
//
//
//void print(struct S1 s)
//{
//	printf("%d ", s.i);
//}
//void print2(struct S1* ps)
//{
//	printf("%d ", ps->i);
//}
//
//struct A
//{
//	int _a : 2;
//	int _b : 5;
//	int _c : 10;
//	int _d : 30;
//};
//struct B
//{
//	char a : 4;
//	char b : 4;
//	char c : 5;
//	char d : 4;
//
//};
//int main()
//{
//	//printf("%d", sizeof(A));
//	printf("%d", sizeof(B));
//
//	struct B b = { 0 };
//	b.a = 10;
//	b.b = 12;
//	b.c = 3;
//	b.d = 4;
//
//
//	return 0;
//}

//struct A
//	{
//	int _a : 2;
//	int _b : 5;
//	int _c : 10;
//	int _d : 30;
//};
//int main()
//{
//	struct A sa = { 0 };
//	//scanf("%d", &sa._b);//这是错误的
//	//正确的⽰范
//	int b = 0;
//	scanf("%d", &b);
//	sa._b = b;
//	return 0;
//}

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
//test 11 兔子集结
struct Ra
{
	int pos;
	bool ac;
	string dct;
};
struct Ra cur_Ra_teg[100000];
int main()
{
	int n, i = 0, j = 0;
	cin >> n;
	for (i = 0; i < n; i++)
	{
		cin >> cur_Ra_teg[i].pos;

	}
	int tmp = 0, cnt = n;
next_Ra:
	while (cnt)
	{

		while (1)
		{
			//兔子跳完一轮并没有全部集结 就接着从第一个兔子跳 
			if (tmp == n - 1) tmp = 0;
			if (cur_Ra_teg[tmp].ac == true)
			{
				tmp++;
				goto next_Ra;
			}
			//找同伴 并且判断是否有距离为1的兔子 
			for (i = 1;; i++)
			{
				for (j = 0;j<10; j++)
				{

					if (cur_Ra_teg[j].pos == cur_Ra_teg[tmp].pos - i)
					{
						if (i == 1)
						{
							//此时左边兔子停止 即j位置的兔子停止 检索兔子向左跳完成集结 
							if (cur_Ra_teg[j].ac == false) cnt--;
							cur_Ra_teg[j].ac = true;
							cur_Ra_teg[tmp].pos -= 1;
							cur_Ra_teg[tmp].ac = true;
							cnt--;
							tmp++;
							goto next_Ra;
						}
						else
						{
							cur_Ra_teg[tmp].dct = "left";
							goto after_parter;
							
						}


					}
					if (cur_Ra_teg[j].pos == cur_Ra_teg[tmp].pos + i)
					{
						if (i == 1)
						{
							//此时 正在检索的这个兔子停止完成集结 继续下一理论检索 
							cur_Ra_teg[tmp].ac = true;
							if (cur_Ra_teg[j].ac == false) cnt--;
							cur_Ra_teg[j].pos -= 1;
							cur_Ra_teg[j].ac = true;
							cnt--;
							tmp++;
							goto next_Ra;
						}
						else
						{
							cur_Ra_teg[tmp].dct = "right";
							goto after_parter;
							
						}


					}
				}

			}
		after_parter:
			//来到这里的是找到同伴的兔子 并且没有特殊情况的
			if (cur_Ra_teg[tmp].dct == "left")
			{
				cur_Ra_teg[tmp].pos -= 1;
			}
			else
			{
				cur_Ra_teg[tmp].pos += 1;
			}
			//跳完轮到下一个兔子跳
			tmp++;
		}
	}
	for (i = 0; i < n; i++)
	{
		cout << cur_Ra_teg[i].pos << " ";
	}

	return 0;
}

